]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
overviewControls: Ease main adjustment when animating to/from overview
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>
Fri, 1 Jan 2021 17:00:30 +0000 (14:00 -0300)
committerMarge Bot <marge-bot@gnome.org>
Thu, 11 Feb 2021 15:50:31 +0000 (15:50 +0000)
Instead of delegating it to ViewSelector, make the transition to and from
overview ease the main state adjustment.

This commit temporarily breaks these animations, but on the other hand
introduces an important feature: ViewSelector is always allocated to the
actual size. This will finally allow for adding WorkspacesView as a child
of WorkspacesDisplay, and finally remove the actual geometry hack, which
is what next commit is about.

This commit also effectively reverts b64103efc.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1624>

js/ui/overviewControls.js
js/ui/viewSelector.js
js/ui/workspacesView.js

index e7c62d3c979a7e0ec94f5731cb5caa9f50644bd3..516de21b6f59cab24beb3ee83755722c5e1c98b7 100644 (file)
@@ -83,6 +83,8 @@ class ControlsManager extends St.Widget {
             clip_to_allocation: true,
         });
 
+        this._ignoreShowAppsButtonToggle = false;
+
         this._searchEntry = new St.Entry({
             style_class: 'search-entry',
             /* Translators: this is the text displayed
@@ -144,6 +146,9 @@ class ControlsManager extends St.Widget {
     }
 
     _onShowAppsButtonToggled() {
+        if (this._ignoreShowAppsButtonToggle)
+            return;
+
         const checked = this.dash.showAppsButton.checked;
 
         const value = checked
@@ -174,10 +179,27 @@ class ControlsManager extends St.Widget {
 
     animateToOverview() {
         this.viewSelector.animateToOverview();
+
+        this._stateAdjustment.value = ControlsState.HIDDEN;
+        this._stateAdjustment.ease(ControlsState.WINDOW_PICKER, {
+            duration: Overview.ANIMATION_TIME,
+            mode: Clutter.AnimationMode.EASE_OUT_QUAD,
+        });
     }
 
     animateFromOverview() {
+        this._ignoreShowAppsButtonToggle = true;
+
         this.viewSelector.animateFromOverview();
+
+        this._stateAdjustment.ease(ControlsState.HIDDEN, {
+            duration: Overview.ANIMATION_TIME,
+            mode: Clutter.AnimationMode.EASE_OUT_QUAD,
+            onStopped: () => {
+                this.dash.showAppsButton.checked = false;
+                this._ignoreShowAppsButtonToggle = false;
+            },
+        });
     }
 
     get searchEntry() {
index bf6f5bb69963c9c9003d931eacf4678755c9810c..1f0836ef81dc04e2064764e8ab7b43cfe82c9e1a 100644 (file)
@@ -411,8 +411,6 @@ var ViewSelector = GObject.registerClass({
     animateFromOverview() {
         this._workspacesDisplay.animateFromOverview();
 
-        this._showAppsButton.checked = false;
-
         if (!this._workspacesDisplay.activeWorkspaceHasMaximizedWindows())
             Main.overview.fadeInDesktop();
     }
index 9ac7b6a6579785da6c78abb92858f1ca50476d59..1e97b71595451e3283c8271e9ccb28b7d34c97f4 100644 (file)
@@ -534,7 +534,6 @@ class WorkspacesDisplay extends St.Widget {
         this._leavingOverview = false;
 
         this._gestureActive = false; // touch(pad) gestures
-        this._animating = false;
 
         this.connect('destroy', this._onDestroy.bind(this));
     }
@@ -705,28 +704,14 @@ class WorkspacesDisplay extends St.Widget {
     }
 
     animateFromOverview() {
-        this._animating = true;
-
         for (let i = 0; i < this._workspacesViews.length; i++)
             this._workspacesViews[i].animateFromOverview();
 
         this._leavingOverview = true;
         this._updateSwipeTracker();
-
-        const { primaryIndex } = Main.layoutManager;
-        const { x, y, width, height } =
-            Main.layoutManager.getWorkAreaForMonitor(primaryIndex);
-        this._getPrimaryView().ease({
-            x, y, width, height,
-            duration: ANIMATION_TIME,
-            mode: Clutter.AnimationMode.EASE_OUT_QUAD,
-            onStopped: () => (this._animating = false),
-        });
     }
 
     vfunc_hide() {
-        this._animating = false;
-
         if (this._restackedNotifyId > 0) {
             Main.overview.disconnect(this._restackedNotifyId);
             this._restackedNotifyId = 0;
@@ -759,8 +744,6 @@ class WorkspacesDisplay extends St.Widget {
     }
 
     _updateWorkspacesViews() {
-        this._animating = false;
-
         for (let i = 0; i < this._workspacesViews.length; i++)
             this._workspacesViews[i].destroy();
 
@@ -837,9 +820,6 @@ class WorkspacesDisplay extends St.Widget {
 
         this._syncActualGeometryLater =
             Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
-                if (this._animating)
-                    return GLib.SOURCE_CONTINUE;
-
                 this._syncWorkspacesActualGeometry();
 
                 this._syncActualGeometryLater = 0;